package call.count;

import java.util.HashMap;
import java.util.Map;

/**
 * 功能：扫描的组件类型枚举
 *
 * @author baitao20
 * @date 2024/2/28 17:35
 **/
public enum COMPONENT_TYPE_ENUM {

    /**
     * Controller 组件 包含 页面、http接口
     */
    CONTROLLER(1, "Controller"),

    /**
     * JMQ 消息组件
     */
    JMQ(2, "JMQ"),

    /**
     * JSF RPC服务组件，只有提供者
     */
    JSF(3, "JSF"),

    /**
     * JOB 定时任务组件，目前只有 科技的定时任务平台
     */
    JOB(4, "JOB"),

    /**
     * 未知组件，除了以上识别的所有其它组件
     */
    UNKNOWN(5, "UNKNOWN");

    private final Integer value;

    private final String label;

    private static final Map<Integer, String> valueMap = new HashMap<>();

    private static final Map<Integer, COMPONENT_TYPE_ENUM> enumMap = new HashMap<>();

    static {
        for (COMPONENT_TYPE_ENUM item : COMPONENT_TYPE_ENUM.values()) {
            valueMap.put(item.value, item.label);
            enumMap.put(item.value, item);
        }
    }

    COMPONENT_TYPE_ENUM(Integer value, String label) {
        this.value = value;
        this.label = label;
    }

    public Integer intValue() {
        return this.value;
    }

    public String value() {
        return String.valueOf(this.value);
    }

    public String label() {
        return this.label;
    }

    public static String getLabelByValue(Integer value) {
        return valueMap.get(value);
    }

    public static COMPONENT_TYPE_ENUM getEnumByValue(Integer value) {
        return enumMap.get(value);
    }
}
